package general;

import java.io.IOException;
import java.sql.*;
import conexion.CConexion;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import validaciones.CLogin;

public class CCo000 extends CConexion {

    private byte[] imagen = null;
    private String codigo = null;
    private String nombre = null;

    public CCo000() {
        super();
        try {
            this.login = new CLogin();
            this.codigo = login.getCompaniaActual();
            this.setImagen();
            this.setNombre();
        } catch (SQLException ex) {
            Logger.getLogger(CCo000.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(CCo000.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(CCo000.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public void setNombre() throws SQLException {
        String sqlNombre = "select co000nomb from co000 where co000nocia='" + codigo + "'";
        Statement stncNombre = this.getConexion().createStatement();
        ResultSet rsNombre = stncNombre.executeQuery(sqlNombre);
        rsNombre.next();
        this.nombre = rsNombre.getString(1);
        rsNombre.close();
        stncNombre.close();
    }

    public String getNombre() {
        return this.nombre;
    }

    public byte[] getImagen() {
        return this.imagen;
    }

    private void setImagen() throws SQLException, IOException, ClassNotFoundException {
        ResultSet rsCargarImagen = null;
        Statement stncCargarImagen = this.getConexion().createStatement();
        String sqlCargarImagen = "select co000logo from co000 where co000nocia='" + codigo + "'";
        rsCargarImagen = stncCargarImagen.executeQuery(sqlCargarImagen);
        rsCargarImagen.next();
        this.imagen = rsCargarImagen.getBytes("co000logo");

    }

    public String baseCambio() throws SQLException {
        String sqlBaseCambio = " SELECT co000baca FROM co000 where co000nocia ='" + codigo + "'";
        Statement stncBaseCambio = this.getConexion().createStatement();
        ResultSet rsBaseCambio = stncBaseCambio.executeQuery(sqlBaseCambio);
        rsBaseCambio.next();
        return rsBaseCambio.getString(1);
    }

    public boolean moneda() throws SQLException {
        String sqlMoneda = " SELECT co000mofu FROM co000 where co000nocia ='" + codigo + "'";
        Statement stncMoneda = this.getConexion().createStatement();
        ResultSet rsMoneda = stncMoneda.executeQuery(sqlMoneda);
        rsMoneda.next();
        if (rsMoneda.getString(1).equalsIgnoreCase("N")) {
            return false;
        } else {
            return true;
        }
    }

    public ResultSet getMoneda() throws SQLException {
        String sqlMoneda = " SELECT co000mofu FROM co000 where co000nocia ='" + codigo + "'";
        Statement stncMoneda = this.getConexion().createStatement();
        ResultSet rsMoneda = stncMoneda.executeQuery(sqlMoneda);
        rsMoneda.next();
        return rsMoneda;
    }

    public String[] getCodigos() throws SQLException {
        String[] codigos = null;
        Statement stncCodigos = this.getConexion().createStatement();
        String sqlCodigos = "select co000nocia from co000";
        ResultSet rsCodigos = stncCodigos.executeQuery(sqlCodigos);
        int numeroCodigos = 0;
        while (rsCodigos.next()) {
            numeroCodigos++;
        }
        codigos = new String[numeroCodigos];
        rsCodigos.beforeFirst();
        while (rsCodigos.next()) {
            codigos[rsCodigos.getRow() - 1] = rsCodigos.getString(1);
        }
        rsCodigos.close();
        stncCodigos.close();
        return codigos;
    }

    public void setCodigo(String codigoCompania) {
        this.codigo = codigoCompania;
    }

    public String getCodigo() {
        return codigo;
    }

    public int numeroRegistros() throws SQLException {
        String sqlNombresCompanias = "select co000nomb from co000 order by co000nocia";
        Statement stncNombresCompanias = this.getConexion().createStatement();
        ResultSet rsNombresCompanias = stncNombresCompanias.executeQuery(sqlNombresCompanias);
        int i = 0;
        while (rsNombresCompanias.next()) {
            i++;
        }
        //rsNombresCompanias.close();
        //stncNombresCompanias.close();

        return i;

    }

    public String[] nombresCompanias() throws SQLException {
        String[] companias = new String[numeroRegistros()];
        String sqlNombresCompanias = "select co000nomb from co000 order by co000nocia";
        Statement stncNombresCompanias = this.getConexion().createStatement();
        ResultSet rsNombresCompanias = stncNombresCompanias.executeQuery(sqlNombresCompanias);
        int i = 0;
        while (rsNombresCompanias.next()) {
            companias[i] = rsNombresCompanias.getString(1);
            i++;
        }
        //rsNombresCompanias.close();
        //stncNombresCompanias.close();

        return companias;
    }

    public List<String> nombCompanias() throws SQLException {
        String[] companias = new String[30];
        String sqlNombresCompanias = "select co000nomb from co000 order by co000nocia";
        Statement stncNombresCompanias = this.getConexion().createStatement();
        ResultSet rsNombresCompanias = stncNombresCompanias.executeQuery(sqlNombresCompanias);
        int i = 0;
        List<String> resultados = new ArrayList<String>();
        while (rsNombresCompanias.next()) {
            companias[i] = rsNombresCompanias.getString(1);
            i++;
            resultados.add(companias[i]);
        }

        rsNombresCompanias.close();
        stncNombresCompanias.close();
        //this.getConexion().close();
        return resultados;
    }

    public String companias(String nombre) throws SQLException {
        String cia = "";
        String sqlCompania = "select co000nocia from co000 where co000nomb='" + nombre + "'";
        Statement stncCompania = this.getConexion().createStatement();
        ResultSet rsCompania = stncCompania.executeQuery(sqlCompania);
        rsCompania.next();
        cia = rsCompania.getString(1);
        //this.getConexion().close();
        return cia;
    }

    public String codigoCompania(String nombre) throws SQLException {
        String cia = "";
        String sqlCompania = "select co000nocia from co000 where co000nomb='" + nombre + "'";
        Statement stncCompania = this.getConexion().createStatement();
        ResultSet rsCompania = stncCompania.executeQuery(sqlCompania);
        rsCompania.next();
        cia = rsCompania.getString(1);
        //this.getConexion().close();
        return cia;
    }

    public boolean aceptaCentrosDeCostos() throws SQLException {
        boolean resultado = false;
        String sqlCentroCostos = "select co000incc from co000 where co000nocia = '" + codigo + "'";
        Statement stncCentroCostos = this.getConexion().createStatement();
        ResultSet rsCentroCostos = stncCentroCostos.executeQuery(sqlCentroCostos);
        rsCentroCostos.next();
        if (rsCentroCostos.getString(1).equals("N")) {
            resultado = true;
        } else {
            resultado = false;
        }
        return resultado;
    }
    
    public boolean centroCosto() throws SQLException {
        Statement stnc = this.getConexion().createStatement();
        ResultSet rs;
        rs = stnc.executeQuery("select co000incc from co000 where co000nocia = '" + login.getCompaniaActual() + "'");
        rs.next();
        if (rs.getString(1).equals("N")) {
            return true;
        } else {
            return false;
        }
    }
}
